package com.fpmsa.officeweb.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.fpmsa.officeweb.model.News;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 官网新闻表 Mapper 接口
 * </p>
 * @author  Huang Yuehong
 * @since 2018-06-14
 */
public interface NewsMapper extends BaseMapper<News> {

    /**
     * 根据条件获取新闻列表
     */
    List<Map<String, Object>> getNewsList(@Param("page") Page<News> page, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("title") String title, @Param("orderByField") String orderByField, @Param("isAsc") boolean asc);

    /**
     * 获取整数条最新或最旧的新闻
     */
    List<Map<String, Object>> getByNumAndOrder(@Param("category") Long category, @Param("num") int num, @Param("isDesc") boolean isDesc);

    /**
     * 获取更多的新闻(排除当前新闻)
     */
    List<Map<String, Object>> getMoreNews(@Param("num") int num, @Param("isDesc") boolean isDesc, @Param("id") Long id);

    /**
     * 获取当前新闻的下一条(比当前时间早的第一条非删除状态新闻)
     */
    List<Map<String, Object>> getNextNews(@Param("create_time") String create_time);

    /**
     * 获取某一类别下，“置顶”状态的新闻mapList
     *
     */
    List<Map<String, Object>> getTheTopNewsMap(@Param("category") Long category);

    /**
     * 根据主键id将某一条新闻“不置顶”
     */
    void setNewsIsNotTop(@Param("id") Long id);

    /**
     * 获取某一类型的新闻数量
     */
    Integer getCountOfCategory(@Param("category") Long category);


    /**
     * 获取对应年份条件下有数据的“年月”列表
     */
    List<Date> getYearAndMonth(@PathVariable("year") Integer year);

    /**
     * 获取对应年份下的所有“大事记”记录
     */
    List<Map<String, Object>> getHistories(@PathVariable("year") Integer year);

}
